package com.chinaums.sftp.internal.connection;

import org.codehaus.commons.nullanalysis.NotNull;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;

/**
 * handler interface.
 */
public interface SftpHandler {

	/**
	 * 登录服务器.
	 */
	void loginFtpServer(SftpConnectionOptions options);

	/**
	 * 登出服务器.
	 */
	void logoutFtpServer() throws IOException;

	/**
	 * 判断给定的目录是否存在.
	 *
	 * @param directoryPath 要检查的路径
	 */
	boolean isDirExist(String directoryPath);

	/**
	 * 检查给定的文件是否存在.
	 *
	 * @param filePath 要检查的文件路径
	 */
	boolean isFileExist(String filePath);

	/**
	 * 获取文件输入流.
	 * @return 普通数据流
	 */
	InputStream getInputStream(String filePath);

	/**
	 * 列出路径下的文件.
	 *
	 * @param path 路径
	 *
	 * @return 文件列表
	 */
	List<String> getFiles(String path);


	/**
	 * 删除目录下的文件.
	 *
	 * @param dir 指定的目录
	 * @param exclude 要排除的文件
	 */
	void deleteAllFilesInDir(String dir, List<String> exclude);



	/**
	 * 获取targz压缩数据流
	 *
	 * @param gzFilePath 文件路径
	 * @param encoding   文件编码
	 */
	BufferedReader getGZInputStream(String gzFilePath, @NotNull String encoding);

	BufferedReader getZipInputStream(String ZipFilePath, @NotNull String encoding) throws IOException;
}
